Boolean Algebra and Operators
Boolean algebra is a branch of algebra where the values of variables can only be true
or false
(often denoted by 1
and 0
respectfully). We use boolean algebra in circuits, general two-valued logic (such as in mathematics), and boolean operations.
There are multiple operations in boolean algebra, but the ones we will focus on are AND
and OR
. We denote AND
through multiplication (ex: AB
) and we denote OR
through addition (ex: A+B
). These operations follow the commutative property, meaning that the order in which we place the operands does not matter. We also have NOT
, denoted by '
operator, which flips the sign, for example A'
.
Truth Tables
Whenever we have a boolean expression, we can express it as a function. Similar to F(x)
we can express a two variable function: F(AB)
, where we can say our domain is {A,B}
. Since our input values can only be true
or false
, we can create a truth table that will show all possible cases with their inputs to the function and the result. Let's take a look at a simple two variable expression, and see how the logic gates AND
and OR
work.
For example, let's take the equation F(AB) = AB
and generate the truth table:
F(AB) | A | B |
---|---|---|
0 | 0 | 0 |
0 | 0 | 1 |
0 | 1 | 0 |
1 | 1 | 1 |
We can also take the equation F(AB) = A+B
and generate the truth table:
F(A+B) | A | B |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
1 | 1 | 0 |
1 | 1 | 1 |
Truth tables are important because we can easily evaluate for the behavior of a function. For user input, it is easier to input truth tables because we can specify cases such as Don't Cares
, which will be discussed later on.
Sum of Product Expressions (SOP)
Let's consider a more complicated expression F(ABCD)= AB'C+BD+CD+D
and generate its truth table:
F(AB'C+BD+CD+D) | A | B | C | D |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 1 |
0 | 0 | 0 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
0 | 0 | 1 | 0 | 0 |
1 | 0 | 1 | 0 | 1 |
0 | 0 | 1 | 1 | 0 |
1 | 0 | 1 | 1 | 1 |
0 | 1 | 0 | 0 | 0 |
1 | 1 | 0 | 0 | 1 |
0 | 1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 0 | 0 |
1 | 1 | 1 | 0 | 1 |
0 | 1 | 1 | 1 | 0 |
1 | 1 | 1 | 1 | 1 |
This example was definately more involved than the previous expressions. An interesting observation is that we are doing a sum of product evaluation, that is, AB'C+BD+CD+D
is a sum of products. The significance of a sum of product is that when we are doing +
we are in fact invoking the OR
operator.
Moreover, the OR
operator returns true
so long as any one of its arguements returns true
. Therefore, if any of the terms in the sum of product (SOP) expressions is true
, then we know that the final expression is true
for certain.
Example Algebraic Simplification
Let's simplify our expression from the previous truth table example. We can apply ordinary algebra tricks such as factoring. Remember that the +
operator invokes the OR
gate, and that true or x
always returns true
regardless of x
(as shown in our first truth table).
AB'C+BD+CD+D // Initial expression
AB'C+BD+D(C+1) // Factor out a D
AB'C+BD+D // Since (C+1) is always true, as C OR true is always true
AB'C+D(B+1) // Factor out a D again
AB'C+D // Since (B+1) is always true, as B OR true is always true
=AB'C+D // Final expression
As an exercise to the reader, complete the truth table to show that they are logically equivalent.
Undefined Input & Don't Cares
The definition of a "Don't care" is a combination of input values that is not known, and could be either 0
or 1
. For the purposes of variable simplification, we would choose the greedy approach of picking between {0
, 1
} such that the simplified expression has less terms.
Let's consider the following truth-table:
F(AB) | A | B |
---|---|---|
1 | 0 | 0 |
1 | 0 | 1 |
? | 1 | 0 |
1 | 1 | 1 |
We observe that we have a Don't care. Let's observe the differences in cases for F(1,0)
:
Case #1: F(1, 0) = 0
=> F(AB) = A'B' + A'B + AB
Case #2: F(1, 0) = 1
=> F(AB) = A'B' + A'B + AB' + AB
Simplifying the cases...
F(AB) = A'B' + A'B + AB
= A'(B' + B) + AB
= A' + AB
F(AB) = A'B' + A'B + AB' + AB
= A'(B' + B) + A (B' + B)
= A' + A
= 1
We can clearly see, if we set F(1, 0) = 1
, we get a true value for any input. Therefore, for the purposes of variable simplification, we can simply let F(1, 0) = 1
thus implying F(AB) = 1
.
Additional Logic Gates
So far we covered the NOT
unary operator, in addition to the binary operators OR
and AND
.